package com.ericsson.springintegrationtest.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * Created by IntelliJ IDEA.
 * User: lbonacina
 * Date: 28/01/11
 * Time: 18.55
 * Implementazione di default per un Service, tutte le implementazione concrete *Impl
 * derivano da questa classe.
 * fornisce l'accesso alla Session di Hibernate, gi� settata e pronta per essere usata
 * tramite il metodo getCurrentSession() (o direttamente alla SessionFactory se necessario)
 * fornisce anche l'accesso ad un oggetto di log.
 */
public class ServiceDefaultImpl {
// ------------------------------ FIELDS ------------------------------

    protected Logger log = Logger.getLogger(this.getClass().getName());

    @Autowired
    private EntityManagerFactory entityManagerFactory;

    private EntityManager entityManager = null;

    public EntityManagerFactory getEntityManagerFactory() {
        return entityManagerFactory;
    }

    public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
        this.entityManagerFactory = entityManagerFactory;
    }

    public EntityManager getEntityManager() {

        return (entityManager != null) ? entityManager : this.entityManagerFactory.createEntityManager();
    }

    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

}
